2022.02.23Java集合每日一考

您所在的位置:网站首页 fancy love 2022.02.23Java集合每日一考

2022.02.23Java集合每日一考

#2022.02.23Java集合每日一考| 来源: 网络整理| 查看: 265

1.集合Collection中存储的如果是自定义类的对象,需要自定义类重写哪个方法?为什么?

需重写equals(),因为remove(),removeAll(),需要调用equals判断是否相等

List:重写equals()

Set:重写equals()和hashcode(),对于存放在Set容器中的对象,对应的类一定要重写equals()和hashCode(Object obj)方法,以实现对象相等规则。即:“相等的对象必须具有相等的散列码”。

  TreeSet:加入到TreeSet的对象的类必须实现Comparable接口

 

2.ArrayList,LinkedList,Vector三者的相同点与不同点?【面试题】

相同点:都是List接口的实现类,元素有序可重复的;

不同点:ArrayList线程不安全,Vector是线程安全的

    LinkedList底层是双向链表存储元素的,ArrayList和Vector是底层都是一个自动变长的数组

 

3.List 接口的常用方法有哪些?(增、删、改、查、插、长度、遍历)

增 add

删 remove、removeAll

改 set(int index,Object o)

查 get(int index)

插 insert(int index,Object o),insert(Object o)

长度 size()

遍历 ①使用iterator迭代器②增强for循环③一般for循环

 

4.如何使用Iterator和增强for循环遍历List。举例说明

public class CircleTest { public static void main(String[] args) { Circle cir1 = new Circle(1.0); Circle cir2 = new Circle(2.0); Circle[] circles = new Circle[]{cir1,cir2}; for (Circle circle:circles) { System.out.println(circle.getRadius()); } System.out.println("_________________"); Collection colls = new ArrayList(); colls.add(cir1); colls.add(cir2); Iterator iterator = colls.iterator(); while (iterator.hasNext()){ Circle c = (Circle)iterator.next(); System.out.println(c.getRadius()); } }

输出:

1.0 2.0 _________________ 1.0 2.0

 

5.Set存储数据的特点是什么?常见的实现类有什么?说明一下彼此的特点。

Set是一个数组+链表的形式,通过计算存入元素的hashcode,无序且不可重复地存入。

实现类:hashSet数组+链表

    LinkHashSet数组+链表,每一个元素之间有双向链表,按顺序保存,不允许元素重复

    TreeSet:new一个hashMap对象,底层是使用红黑树结构存储数据

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3